/*
 * Copyright 2010 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * Warning! This file is generated. Modify at your own risk.
 */

package com.google.api.services.calendar.model;

import com.google.api.client.json.GenericJson;
import com.google.api.client.util.DateTime;

/**
 * Model definition for EventDateTime.
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Calendar API. For a detailed explanation see:
 * <a href="http://code.google.com/p/google-api-java-client/wiki/Json">http://code.google.com/p/google-api-java-client/wiki/Json</a>
 * </p>
 *
 * <p>
 * Upgrade warning: starting with version 1.12 {@code getResponseHeaders()} is removed, instead use
 * {@link com.google.api.client.http.json.JsonHttpRequest#getLastResponseHeaders()}
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class EventDateTime extends GenericJson {

  /**
   * The date, in the format "yyyy-mm-dd", if this is an all-day event.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private DateTime date;

  /**
   * The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The
   * default is the time zone of the calendar.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private String timeZone;

  /**
   * The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset
   * is required unless a time zone is explicitly specified in 'timeZone'.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private DateTime dateTime;

  /**
   * The date, in the format "yyyy-mm-dd", if this is an all-day event.
   * The value returned may be {@code null}.
   */
  public DateTime getDate() {
    return date;
  }

  /**
   * The date, in the format "yyyy-mm-dd", if this is an all-day event.
   * The value set may be {@code null}.
   */
  public EventDateTime setDate(DateTime date) {
    this.date = date;
    return this;
  }

  /**
   * The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The
   * default is the time zone of the calendar.
   * The value returned may be {@code null}.
   */
  public String getTimeZone() {
    return timeZone;
  }

  /**
   * The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The
   * default is the time zone of the calendar.
   * The value set may be {@code null}.
   */
  public EventDateTime setTimeZone(String timeZone) {
    this.timeZone = timeZone;
    return this;
  }

  /**
   * The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset
   * is required unless a time zone is explicitly specified in 'timeZone'.
   * The value returned may be {@code null}.
   */
  public DateTime getDateTime() {
    return dateTime;
  }

  /**
   * The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset
   * is required unless a time zone is explicitly specified in 'timeZone'.
   * The value set may be {@code null}.
   */
  public EventDateTime setDateTime(DateTime dateTime) {
    this.dateTime = dateTime;
    return this;
  }

}
